# Chapter 8. Redirection

#### Contents:

ScriptAlias
ScriptAliasMatch
Alias
AliasMatch
UserDir
Redirect
RedirectMatch
Rewrite
Speling

Few things are ever in exactly the right place at the right time, and this is as true of most web servers as of anything else in this vale of tears. `Alias` and `Redirect` allow requests to be shunted about your filesystem or around the Web. Although in a perfect world it should never be necessary to do this, in practice it is often useful to be able to move HTML files around on the server, or even to a different server, without having to change all the links in the HTML script.[52] A more legitimate use -- of `Alias`, at least -- is to rationalize directories spread around the system. For example, they may be maintained by different users, and perhaps may even be held on remotely mounted filesystems. But `Alias` can make them appear to be grouped in a more logical way.

> [52]Too much of this kind of thing can make your site difficult to maintain.

`ScriptAlias` allows you to run CGI scripts, without which few web sites could function. You have a choice: everything that`ScriptAlias` does, and much more, can be done by the new `Rewrite` directive (described later in this chapter), but at a cost of some real programming effort.

`ScriptAlias` is relatively simple to use, but it is also a good example of Apache's modularity being a little less modular than we might like. Although `ScriptAlias` is defined in mod_alias.c in the Apache source code, it needs mod_cgi.c (or any module that does CGI) in order to function. The functionality of mod_alias.c is one way of causing CGI scripts to run. It is compiled into Apache by default.

The httpd.conf file on ... /site.alias contains the following:

>     User webuser
>     Group webgroup

>     ServerName www.butterthlies.com

>     ServerAdmin sales@butterthlies.com
>     DocumentRoot /usr/www/site.alias/htdocs/customers
>     ErrorLog /usr/www/site.alias/logs/customers/error_log
>     TransferLog /usr/www/site.alias/logs/customers/access_log
>     Alias /somewhere_else /usr/www/somewhere_else

>     <VirtualHost sales.butterthlies.com>
>     ServerAdmin sales_mgr@butterthlies.com
>     DocumentRoot /usr/www/site.alias/htdocs/salesmen
>     ServerName sales.butterthlies.com
>     ErrorLog /usr/www/site.alias/logs/salesmen/error_log
>     TransferLog /usr/www/site.alias/logs/salesmen/access_log
>     </VirtualHost>

## 8.1. ScriptAlias

>     ScriptAlias url_path directory_or_filename
>     Server config, virtual host

We have already come across `ScriptAlias` (see Chapter 4, "Common Gateway Interface (CGI) "). It allows scripts to be stored safely out of the way of prying fingers and, moreover, automatically marks the directory where they are stored as containing CGI scripts.

Copyright © 2001 O'Reilly & Associates. All rights reserved.